how to optimize a function